package com.xingchi.tornado.mybatisplus.service;

import com.xingchi.tornado.model.BaseDTO;
import com.xingchi.tornado.model.PageResult;
import com.xingchi.tornado.model.PaginationQuery;

import java.util.List;

/**
 * 基础查询相关接口
 *
 * @author xingchi
 * @date 2024/3/2 19:09
 */
public interface BaseQueryService<T extends BaseDTO, Q extends PaginationQuery> extends BaseService<T> {

    /**
     * 查询总条数
     *
     * @param query 查询对象
     * @return 结果数
     */
    Long count(Q query);

    /**
     * 根据query查询
     *
     * @param query 查询对象
     * @return 最终对象
     */
    List<T> selectByQuery(Q query);

    /**
     * 根据query查询
     *
     * @param query 查询对象
     * @return 最终对象
     */
    PageResult<T> selectPageByQuery(Q query);

    /**
     * 根据query查询一条记录，如果查询到多条会进行limit
     *
     * @param query 查询对象
     * @return 查询结果
     */
    T selectOne(Q query);

}
